﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using DataAccessComponents;
using BusinessLogicLayer;

namespace inzDesktop
{
    /// <summary>
    /// Interaction logic for windowDodajTermin.xaml
    /// </summary>
    public partial class windowDodajTermin : Window
    {
        public windowDodajTermin()
        {
            InitializeComponent();
        }
        public void inicjalizujZawartosc()
        {            
            Termin termin = new Termin();
            termin.Czy_zmiana = false;
            this.DataContext = termin;

            //Uzupelanianie combobox
            MiastoBL miastoBL = new MiastoBL();
            cbMiastoCelu.ItemsSource = miastoBL.pobierzListe();
            cbMiastoWylotu.ItemsSource = miastoBL.pobierzListe();

            OfertaBL ofertaBL = new OfertaBL();
            cbNazwaOferta.ItemsSource = ofertaBL.pobierzListe();

        }
        public void inicjalizujZawartosc(Termin termin)
        {            
            termin.Czy_zmiana = false;
            this.DataContext = termin;

            //Uzupelanianie combobox
            MiastoBL miastoBL = new MiastoBL();
            cbMiastoCelu.ItemsSource = miastoBL.pobierzListe();
            cbMiastoWylotu.ItemsSource = miastoBL.pobierzListe();

            OfertaBL ofertaBL = new OfertaBL();
            cbNazwaOferta.ItemsSource = ofertaBL.pobierzListe();
        }
      

        private void btnAnuluj_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void btnOk_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(LayoutRoot))
            {
                System.Windows.MessageBoxResult wynik = System.Windows.MessageBox.Show("Czy zapisać zmiany?", "Uwaga!", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (wynik == MessageBoxResult.Yes)
                {
                    zapiszZmianyTermin();
                    this.Close();
                }
                else if (wynik == MessageBoxResult.No)
                {
                    this.Close();
                }
            }
            else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }

        private void zapiszZmianyTermin()
        {
            TerminBL terminBL = new TerminBL();
            terminBL.dodaj(this.DataContext as Termin);
        }

        private void btnZastosuj_Click(object sender, RoutedEventArgs e)
        {
            zapiszZmianyTermin();
            System.Windows.MessageBox.Show("Zmiany zapisane pomyślnie", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void dpTerminOD_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            Termin termin = (Termin)this.DataContext;
            // Przypisanie wybranej daty
            termin.Data_rozpoczecia = (DateTime)((DatePicker)sender).SelectedDate;
        }

        private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            Termin termin = (Termin)this.DataContext;
            // Przypisanie wybranej daty
            termin.Data_zakonczenia = (DateTime)((DatePicker)sender).SelectedDate;
        }

        private void tbIloscDni_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (!string.IsNullOrEmpty(tbIloscDni.Text))
            {
                dpTerminDO.SelectedDate = ((DateTime)dpTerminOD.SelectedDate).AddDays(Convert.ToDouble(tbIloscDni.Text));
            }
        }
    }
    
}
